#include "stdio.h"
#include "math.h"
#include "string.h"

long int shu[21][21][21];

long int di(int a,int b,int c)
{
	if ((a<=0)||(b<=0)||(c<=0)) return 1;
	if ((a>20)||(b>20)||(c>20)) return 1048576;
	if (shu[a][b][c]!=0) return shu[a][b][c];
	else
	{
		if ((a<b)&&(b<c)) return (shu[a][b][c]=di(a,b,c-1)+di(a,b-1,c-1)-di(a,b-1,c));
		else			  return (shu[a][b][c]=di(a-1,b,c)+di(a-1,b-1,c)+di(a-1,b,c-1)-di(a-1,b-1,c-1));	
	}
}

void main()
{
	int a,b,c;
	
	memset(shu,sizeof(shu),0);
	scanf("%d%d%d",&a,&b,&c);
	while (!( (a==-1)&&(b==-1)&&(c==-1) ) )
	{
		printf("w(%d, %d, %d) = %ld\n",a,b,c,di(a,b,c));
		scanf("%d%d%d",&a,&b,&c);
	}
	
}


/*
*问题描述:
	数学函数递归调用问题.题目明确说明如果单纯的调用会takes hours to run
	我用一个三维数组来保存运算的结果.这样就不会重复计算了.

 完成日期:2004/07/22
 
 开始时间 14:43
 完成时间 15:12
 编程用时 30分钟

 调式问题:
	1.不知道怎么回事,刚开始时格式错误,后来改了半天又改回去了又对了.可能是笔误吧.
	2.犯了一个低极错误,刚开始时把:
		!( (a==-1)&&(b==-1)&&(c==-1) ) 写成了 !( (a=-1)&&(b=-1)&&(c=-1) )
		结果一运行就退出.
	
 */